package com.example.cmh.mapper;

import com.example.cmh.pojo.Tenant;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 租户数据访问层
 */
@Mapper
public interface TenantMapper {
    
    /**
     * 分页条件搜索租户信息
     * @param offset 偏移量
     * @param size 每页大小
     * @param tenantName 租户名称
     * @param contactPhone 联系电话
     * @param contactPerson 联系人
     * @param tenantId 租户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 租户列表
     */
    List<Tenant> getTenants(@Param("offset") Integer offset,
                           @Param("size") Integer size,
                           @Param("tenantName") String tenantName,
                           @Param("contactPhone") String contactPhone,
                           @Param("contactPerson") String contactPerson,
                           @Param("tenantId") Integer tenantId,
                           @Param("startTime") String startTime,
                           @Param("endTime") String endTime);
    
    /**
     * 获取租户总数
     * @param tenantName 租户名称
     * @param contactPhone 联系电话
     * @param contactPerson 联系人
     * @param tenantId 租户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 总数
     */
    Integer getTenantsCount(@Param("tenantName") String tenantName,
                           @Param("contactPhone") String contactPhone,
                           @Param("contactPerson") String contactPerson,
                           @Param("tenantId") Integer tenantId,
                           @Param("startTime") String startTime,
                           @Param("endTime") String endTime);
    
    /**
     * 新增租户
     * @param tenant 租户信息
     */
    void addTenants(Tenant tenant);
    
    /**
     * 更新租户信息
     * @param tenant 租户信息
     */
    void updateTenant(Tenant tenant);
    
    /**
     * 删除租户
     * @param tenantId 租户ID
     */
    void deleteTenant(@Param("tenantId") Integer tenantId);
    
    /**
     * 根据租户ID查询租户信息
     * @param tenantId 租户ID
     * @return 租户信息
     */
    Tenant getTenantById(@Param("tenantId") Integer tenantId);

    void deleteIcon(Integer tenantId);
} 